Giả sử rằng ta có một chương trình làm toán, người làm bài chỉ có thời gian là 5 giây để trả lời câu hỏi, quá thời gian 5 giây, nếu người chơi chưa trả lời được, hoặc là trả lời sai sẽ hiện ra bảng thông báo chứa kết quả. CÒn nếu trong thời gian 5 giây, người chơi kịp trả lời và trả lời chính xác, một thông báo chúc mừng xuất hiện.
Hướng gải quyết của chúng ta sẽ là:
1 Viết một hàm kiểm tra đáp án, kích hoạt khi người dùng nhấn submit
2 Trong lúc đó cũng viết một hàm hẹn giờ với setTimeout.
3 Phải làm như thế nào để dừng bước 2 khi người trả lời đúng.
Bước 1 và 2 mình tin các bạn sẽ dễ dàng làm được, mọi việc ta cần là ở bước 3, mọi người hãy xem ví dụ:
Mã nguồn:[Chọn] <script type="text/javascript">
//hàm bắt đầu làm toán
function batdau()
{
alert("Kết quả của biểu thức: 3+5=?");
dapan=8;
/*bắt đầu tính thời gian, trong trường hợp này tagan một biến cho setTimeout để dễ hao tác hơn
*/hengio=setTimeout("sai();",5000);
}
//hàm thông báo khi sai
function sai()
{
alert("Đáp án đúng là "+dapan);
}
//hàm kiểm tra
function check()
{
if(document.the_form.kq.value==dapan)
{
alert("Chúc mừng bạn đã trả lời đúng");
//Xoá bỏ hẹn giờ với
clearTimeoutclearTimeout(hengio);
}else{
sai();
clearTimeout(hengio);
}
}
</script>
Hàm bắt đầu sẽ in ra câu hỏi, sau đó bắt đầu hẹn giờ, hết tời gian, setTimeout sẽ gọi hàm sai() thông báo đáp án.
Hàm check sẽ được gọi khi gửi thông tin, nếu đáp án đúng thì gửi câu chúc mừng, sai thì gọi hàm sai, cả hai hành động đều dùng thêm một hàm clearTimeout để tắt stTimeout.
Để làm việc với clearTimeout ta cần gán setTimeout với một giá trị bài sau sẽ hướng dẫn cách để chúng ta làm một đồng hồ bấm giờ với clearTimeout và setTimeout